package com.douma.lock;

import redis.clients.jedis.Jedis;

/**
 * 抖码课堂，专注中国程序员基础内功修炼
 * 官网：douma-tech.com
 * 公众号：抖码课堂
 *
 * @作者 : 老汤
 */
public class RedisDistributeLock3 {
    private Jedis jedis;

    public RedisDistributeLock3(Jedis jedis) {
        this.jedis = jedis;
    }

    // SETNX state 1
    public boolean lock() {
        // 如果 state 已经存在，则返回 0，说明加锁失败
        // 如果 state 不存在，则设置 state，返回 1，说明加锁成功
        long state = jedis.setnx("state", "1");
        return state == 1;
    }

    // 释放锁，删除 state
    public void unlock() {
        jedis.del("state");
    }
}
